﻿using System;
using System.Collections.Generic;
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using BBMS.DLL.Forms.Base;
using BBMS.DLL.Base;
using BBMS.DLL.DataContract;
using ExcelLibrary.SpreadSheet;

namespace BBMS.DLL.Forms.Bill.Agreement
{
    public partial class frmAgreementFilter : FrmFilterBase
    {
        public frmAgreementFilter()
        {
            InitializeComponent();
            GetMaNCCList();
        }

        private void GetMaNCCList()
        {
            ArrayList arret = NhaCungCapList.getAllMaNCC();
            cbxMaNCC.Items.Add(new KeyValuePair("", "Tất cả"));
            if (arret != null)
            {
                for (int i = 0; i < arret.Count; i++)
                {
                    KeyValuePair kvp = (KeyValuePair)arret[i];
                    cbxMaNCC.Items.Add(kvp);
                }
            }
            cbxMaNCC.SelectedIndex = 0;
        }


        public new static readonly string FunctionKey = "CT_CKTM";
        protected override string GetFunctionKey() { return "CT_CKTM"; }
        protected override BBMS.DLL.Base.ObjectBase GetObjectBase() { return new ChungTuCamKetThuongMai(); }

        protected override void GenColHeaders()
        {
            lvList.Columns.Clear();
            lvList.Columns.Add("Ký hiệu", 80);
            lvList.Columns[0].TextAlign = HorizontalAlignment.Right;
            lvList.Columns.Add("Số hiệu", 80);
            lvList.Columns[1].TextAlign = HorizontalAlignment.Right;
            lvList.Columns.Add("Ngày CT", 80);
            lvList.Columns[2].TextAlign = HorizontalAlignment.Right;
            lvList.Columns.Add("Nhà cung cấp", 200);
            lvList.Columns.Add("Giá trị", 100, HorizontalAlignment.Right);
            lvList.Columns[4].TextAlign = HorizontalAlignment.Right;
        }
        protected override ArrayList GenSampleData()
        {
            ArrayList ar = new ArrayList();
            ar.Add(new string[] { "Mã chứng từ", "Số chứng từ", "Ngày chứng từ", "Hạn thanh toán",
            "Ngày thanh toán dự kiến" , "Ngày thanh toán", "Trạng thái thanh toán", "Mã hồ sơ",
            "Mã NCC", "Giá trị thu","Giá trị đã thanh toán", "Chứng từ gốc", "Có hóa đơn", "Ghi chú"
            ,"Mã nhân viên"});
            ChungTuCamKetThuongMai chungTuCamKetThuongMaiList = new ChungTuCamKetThuongMai();
            ArrayList arr = chungTuCamKetThuongMaiList.GetAllObject(fParams);
            if (arr != null)
            {
                for (int i = 0; i < arr.Count; i++)
                {
                    ChungTuCamKetThuongMai nh = (ChungTuCamKetThuongMai)arr[i];
                    ar.Add(new string[] { nh.MaCT, nh.SoCT, nh.NgayCT.ToString(), nh.NgayHT.ToString()
                    , nh.NgayTTDuKien.ToString(),nh.NgayTT.ToString(), ((int)nh.TrangThaiTT).ToString()
                    , nh.MaHoSo, nh.MaNCC, nh.GiaTriCT.ToString(),nh.GiaTriDaTT.ToString()
                    , nh.ChungTuGoc, nh.CoHoaDon.ToString(), nh.GhiChu, nh.NVID.ToString()});
                    
                }
            }
            //ArrayList ar = new ArrayList();
            ////ar.Add(new string[] { "Mã NCC", "Tên NCC", "Địa chỉ", "Thành phố", });
            ////ar.Add(new string[] { "QTP", "Quầy thực phẩm", "Food counter", "NTP" });
            //// define col width
            ////ar.Add(new int[] { 100, 300, 100, 300 });
            return ar;
        }

        protected override ArrayList GetImportedList(Worksheet sheet)
        {
            ArrayList arret = new ArrayList();
            for (int i = 1; i < sheet.Cells.Rows.Count; i++)
            {
                ChungTuCamKetThuongMai ctcktm = new ChungTuCamKetThuongMai();
                Cell cell = sheet.Cells[i, 0];
                ctcktm.MaCT = cell.Value.ToString();
                cell = sheet.Cells[i, 1];
                ctcktm.SoCT = cell.Value.ToString();
                cell = sheet.Cells[i, 2];
                if (cell.Value.ToString() != "") ctcktm.NgayCT = Convert.ToDateTime(cell.Value.ToString());
                cell = sheet.Cells[i, 3];
                if (cell.Value.ToString() != "") ctcktm.NgayHT = Convert.ToDateTime(cell.Value.ToString());
                cell = sheet.Cells[i, 4];
                if (cell.Value.ToString() != "") ctcktm.NgayTTDuKien = Convert.ToDateTime(cell.Value.ToString());
                cell = sheet.Cells[i, 5];
                if (cell.Value.ToString() != "") ctcktm.NgayTT = Convert.ToDateTime(cell.Value.ToString());
                cell = sheet.Cells[i, 6];
                foreach (TrangThaiThanhToan item in Enum.GetValues(typeof(TrangThaiThanhToan)))
                {
                    if (item.ToString() == cell.Value.ToString())
                        ctcktm.TrangThaiTT = item;
                }
                cell = sheet.Cells[i, 7];
                ctcktm.MaHoSo = cell.Value.ToString();
                cell = sheet.Cells[i, 8];
                ctcktm.MaNCC = cell.Value.ToString();
                cell = sheet.Cells[i, 9];
                if (cell.Value.ToString() != "") ctcktm.GiaTriCT = Convert.ToInt64(cell.Value.ToString());
                cell = sheet.Cells[i, 10];
                if (cell.Value.ToString() != "") ctcktm.GiaTriDaTT = Convert.ToInt64(cell.Value.ToString());
                cell = sheet.Cells[i, 11];
                ctcktm.ChungTuGoc = cell.Value.ToString();
                cell = sheet.Cells[i, 12];
                if (cell.Value.ToString() != "") ctcktm.CoHoaDon = Convert.ToBoolean(cell.Value.ToString());
                cell = sheet.Cells[i, 13];
                ctcktm.GhiChu = cell.Value.ToString();
                cell = sheet.Cells[i, 14];
                if (cell.Value.ToString() != "") ctcktm.NVID = Convert.ToInt32(cell.Value.ToString());
                arret.Add(ctcktm);                           
            

            }
            return arret;
        }

        protected override void UpdateFilterParams()
        {
            if (txtMa.Text.Trim() != "" || txtSoCT.Text.Trim() != "" || cbxMaNCC.SelectedIndex != -1
              || txtChungTuGoc.Text.Trim() != "" || chxCoHoaDon.CheckState!=CheckState.Indeterminate )
            {
                fParams = new FilterParams();
                //FilterCondition fcLoaiCTCK = new FilterCondition("LoaiCT", "LoaiCT", "CT_CKTM", SQLOperator.EQUAL);
                //fParams.ArParams.Add(fcLoaiCTCK);
                //FilterCondition fcIsChi = new FilterCondition("IsChi", "IsChi", false, SQLOperator.EQUAL);
                //fParams.ArParams.Add(fcIsChi);
                if (txtMa.Text.Trim() != "")
                {
                    FilterCondition fcMa = new FilterCondition("MaCT", "MaCT", "%" + txtMa.Text.Trim() + "%", SQLOperator.LIKE);
                    fParams.ArParams.Add(fcMa);
                }

                if (txtSoCT.Text.Trim() != "")
                {
                    FilterCondition fcSoCT = new FilterCondition("SoCT", "SoCT", "%" + txtSoCT.Text.Trim() + "%", SQLOperator.LIKE);
                    fParams.ArParams.Add(fcSoCT);
                }

                if (cbxMaNCC.SelectedIndex != 0)
                {
                    FilterCondition fcMaNCC = new FilterCondition("MaNCC", "MaNCC", ((KeyValuePair)cbxMaNCC.SelectedItem).Key, SQLOperator.EQUAL);
                    fParams.ArParams.Add(fcMaNCC);
                }

                if (txtChungTuGoc.Text.Trim() != "")
                {
                    FilterCondition fcChungTuGoc = new FilterCondition("ChungTuGoc", "ChungTuGoc", "%" + txtChungTuGoc.Text.Trim() + "%", SQLOperator.LIKE);
                    fParams.ArParams.Add(fcChungTuGoc);
                }

                if (chxCoHoaDon.CheckState != CheckState.Indeterminate)
                {
                    FilterCondition fcCoHoaDon = null;
                    if (chxCoHoaDon.CheckState == CheckState.Checked)
                        fcCoHoaDon = new FilterCondition("CoHoaDon", "CoHoaDon", true, SQLOperator.EQUAL);
                    else fcCoHoaDon = new FilterCondition("CoHoaDon", "CoHoaDon", false, SQLOperator.EQUAL);
                    fParams.ArParams.Add(fcCoHoaDon);
                }

                FilterCondition fcTuNgayTT = new FilterCondition("NgayTT", "TuNgayTT", new DateTime(dtpTuNgayTT.Value.Year, dtpTuNgayTT.Value.Month, dtpTuNgayTT.Value.Day, 0, 0, 0), SQLOperator.GREATER_OR_EQUAL);
                fParams.ArParams.Add(fcTuNgayTT);

                FilterCondition fcDenNgayTT = new FilterCondition("NgayTT", "DenNgayTT", new DateTime(dtpDenNgayTT.Value.Year, dtpDenNgayTT.Value.Month, dtpDenNgayTT.Value.Day, 23, 59, 59), SQLOperator.LOWER_OR_EQUAL);
                fParams.ArParams.Add(fcDenNgayTT);


               


                fParams.CurrentPage = 0;
            }
            else
            {
                MessageBox.Show(null, "Bạn phải nhập nội dung tìm kiếm", "Thông báo");
            }
        }

        protected override FrmEditBase CreateEditForm(BBMS.DLL.Base.ObjectBase obj)
        {
            return new frmAgreementUpdate(obj);
        }

        protected override void AddNewObjectToList(BBMS.DLL.Base.ObjectBase obj)
        {
            if (obj == null) return;
            ListViewItem it = new ListViewItem(((ChungTuCamKetThuongMai)obj).MaCT);
            it.SubItems.Add(((ChungTuCamKetThuongMai)obj).SoCT);
            it.SubItems.Add(((ChungTuCamKetThuongMai)obj).NgayCT.ToString("dd/MM/yyyy"));
            it.SubItems.Add(ObjectLists.NhaCungCapList.getObjectName(((ChungTuCamKetThuongMai)obj).MaNCC));
            it.SubItems.Add(CommonTools.Helper.MoneyString(((ChungTuCamKetThuongMai)obj).GiaTriCT));
            it.Tag = obj;
            lvList.Items.Add(it);
        }

        protected override void UpdateObjectToList(BBMS.DLL.Base.ObjectBase obj)
        {
            foreach (ListViewItem it in lvList.Items)
            {
                if (((ChungTuCamKetThuongMai)it.Tag).MaCT == ((ChungTuCamKetThuongMai)obj).MaCT)
                {
                    it.SubItems[2].Text = ((ChungTuCamKetThuongMai)obj).NgayCT.ToString("dd/MM/yyyy");
                    it.SubItems[3].Text = ObjectLists.NhaCungCapList.getObjectName(((ChungTuCamKetThuongMai)obj).MaNCC);
                    it.SubItems[4].Text = CommonTools.Helper.MoneyString(((ChungTuCamKetThuongMai)obj).GiaTriCT);
                    it.Tag = obj;
                    break;
                }
            }
        }
    }
}
